λꡬ μ²΄μΈ μ±λ₯μ λν ν¬κ΄μ μΈ λΆμμΌλ‘ JavaScript κ°λ° μν¬νλ‘μ°λ₯Ό μ΅μ ννμΈμ. λ³λͺ© νμμ μλ³νκ³ , μ μ ν λꡬλ₯Ό μ ννκ³ , κ΅μ νμ μμ°μ±μ ν₯μμν€λ λ°©λ²μ μμ보μΈμ.
JavaScript κ°λ° μν¬νλ‘μ° μ΅μ ν: λꡬ μ²΄μΈ μ±λ₯ λΆμ
μΉ κ°λ°μ μλμ μΈ μΈκ³μμ JavaScriptλ κ³μν΄μ μ§λ°°μ μΈ νμ λλ€. νλ‘μ νΈμ 볡μ‘μ±μ΄ μ¦κ°νκ³ νμ΄ μ μ λ κΈλ‘λ²νλ¨μ λ°λΌ κ°λ° μν¬νλ‘μ°λ₯Ό μ΅μ ννλ κ²μ΄ κ°μ₯ μ€μν©λλ€. μ΄ κΈ°μ¬μμλ JavaScript λꡬ 체μΈμ μ±λ₯ λΆμμ μμΈν μ΄ν΄λ³΄κ³ μμ°μ±μ ν₯μνκ³ νμ μ κ°μννλ©° λ€μν κ΅μ νμ κ°λ° μ£ΌκΈ°λ₯Ό κ°μννκΈ° μν ν΅μ°°λ ₯κ³Ό μ€ν κ°λ₯ν λ¨κ³λ₯Ό μ 곡ν©λλ€.
JavaScript λꡬ μ²΄μΈ μ΄ν΄
JavaScript λꡬ 체μΈμ μμ€ μ½λλ₯Ό κΈ°λ₯μ μΉ μ ν리μΌμ΄μ μΌλ‘ λ³ννλ λ° κ΄λ ¨λ λͺ¨λ λꡬμ νλ‘μΈμ€λ₯Ό ν¬ν¨ν©λλ€. μ μ΅μ νλ λꡬ 체μΈμ λΉλ μκ°μ μ΅μννκ³ μ½λ νμ§μ ν₯μμν€λ©° λλ²κΉ μ λ¨μνν©λλ€. μ£Όμ κ΅¬μ± μμλ λ€μκ³Ό κ°μ΅λλ€.
- μ½λ νΈμ§κΈ°/IDE: κ°λ°μκ° μ½λλ₯Ό μμ±νκ³ νΈμ§νλ κ³³(μ: Visual Studio Code, Sublime Text, WebStorm).
- ν¨ν€μ§ κ΄λ¦¬μ: μ’ μμ±μ κ΄λ¦¬νκΈ° μν κ²(μ: npm, yarn, pnpm).
- λΉλ λꡬ: μ½λλ₯Ό λ²λ€λ§, μΆμ λ° λ³ννκΈ° μν κ²(μ: Webpack, Parcel, Rollup, esbuild).
- ν μ€ν νλ μμν¬: ν μ€νΈλ₯Ό μμ±νκ³ μ€ννκΈ° μν κ²(μ: Jest, Mocha, Jasmine).
- λλ²κΉ λꡬ: μ€λ₯λ₯Ό μλ³νκ³ ν΄κ²°νκΈ° μν κ²(μ: λΈλΌμ°μ κ°λ°μ λꡬ, Node.js λλ²κ±°).
- μ§μμ ν΅ν©/μ§μμ λ°°ν¬(CI/CD) μμ€ν : λΉλ, ν μ€νΈ λ° λ°°ν¬ νλ‘μΈμ€λ₯Ό μλννκΈ° μν κ²(μ: Jenkins, GitLab CI, GitHub Actions, CircleCI).
μ±λ₯ λΆμμ΄ μ€μν μ΄μ
λΉν¨μ¨μ μΈ λꡬ 체μΈμ λ€μκ³Ό κ°μ λͺ κ°μ§ λ¨μ μΌλ‘ μ΄μ΄μ§λλ€.
- λΉλ μκ° μ¦κ°: κΈ΄ λΉλ μκ°μ κ°λ°μμ μκ°μ λλΉνκ³ νΌλλ°± 루νλ₯Ό λ¦μΆ₯λλ€.
- κ°λ°μ μμ°μ± κ°μ: κ°λ°μλ μ½λ©νλ μκ°λ³΄λ€ κΈ°λ€λ¦¬λ λ° λ λ§μ μκ°μ 보λ λλ€.
- κ°λ° λΉμ© μ¦κ°: λΉν¨μ¨μ μΈ μν¬νλ‘μ°λ λ λμ μΈκ±΄λΉλ‘ μ΄μ΄μ§λλ€.
- μ½λ νμ§ λ¬Έμ : λλ¦° νΌλλ°± 루νλ λ λ§μ λ²κ·Έλ‘ μ΄μ΄μ§ μ μμ΅λλ€.
- κ΅μ νμ λ―ΈμΉλ μν₯: μ§μ°μ μκ°λλ₯Ό ν΅ν΄ μ¦νλμ΄ νμ μ λ°©ν΄ν μ μμ΅λλ€.
JavaScript λꡬ 체μΈμ λ³λͺ© νμ μλ³
μ΅μ νμ 첫 λ²μ§Έ λ¨κ³λ μ±λ₯ λ³λͺ© νμμ μλ³νλ κ²μ λλ€. μ‘°μ¬ν μΌλ°μ μΈ μμμ λ€μκ³Ό κ°μ΅λλ€.
1. λΉλ μκ°
νλ‘μ νΈλ₯Ό λΉλνλ λ° κ±Έλ¦¬λ μκ°μ μΈ‘μ ν©λλ€. `time`(Linux/macOSμμ) λλ λΉλ λꡬμ νλ‘νμΌλ§ κΈ°λ₯(μ: Webpack Bundle Analyzer)κ³Ό κ°μ λꡬλ₯Ό μ¬μ©νλ©΄ λλ¦° νλ‘μΈμ€λ₯Ό μ νν μ°ΎμλΌ μ μμ΅λλ€. λ€μ μμλ₯Ό κ³ λ €νμμμ€.
- λ²λ€ ν¬κΈ°: ν° λ²λ€μ μ²λ¦¬νλ λ° μκ°μ΄ λ μ€λ 걸립λλ€. μ΄λ―Έμ§λ₯Ό μ΅μ ννκ³ , μ½λ λΆν μ μ¬μ©νκ³ , νΈλ¦¬ μμ΄νΉμ μνν©λλ€.
- λ³ν 볡μ‘μ±: 볡μ‘ν λ³ν(μ: Babel, TypeScript μ»΄νμΌ)μ μκ°μ΄ λ§μ΄ 걸릴 μ μμ΅λλ€. μ΄λ¬ν λ³νμ ν¨μ¨μ μΌλ‘ ꡬμ±νκ³ μ΅μ λ²μ μΌλ‘ μ λ°μ΄νΈν©λλ€.
- μΊμ±: λΉλ λꡬμμ μ 곡νλ μΊμ± λ©μ»€λμ¦μ νμ©νμ¬ μ΄μ μ μ»΄νμΌλ μμ°μ μ¬μ¬μ©ν©λλ€.
- λμμ±: κ°λ₯ν κ²½μ° λ©ν° μ€λ λ© λλ λ³λ ¬ μ²λ¦¬λ₯Ό νμ©ν©λλ€.
- νλμ¨μ΄: κ°λ°μκ° μΆ©λΆν RAMκ³Ό μ²λ¦¬ λ₯λ ₯μ κ°μΆκ³ μλμ§ νμΈν©λλ€. 리μμ€ μ§μ½μ μΈ μμ μλ ν΄λΌμ°λ κΈ°λ° λΉλ νκ²½μ κ³ λ €νμμμ€.
2. ν¨ν€μ§ μ€μΉ
ν¨ν€μ§ μ€μΉ μλλ νλ‘μ νΈμ μ΄κΈ° μ€μ λ° μ§μμ μΈ μ μ§ κ΄λ¦¬μ μν₯μ λ―ΈμΉ©λλ€. λ€μμ μ‘°μ¬νμμμ€.
- ν¨ν€μ§ κ΄λ¦¬μ: λ€μν ν¨ν€μ§ κ΄λ¦¬μ(npm, yarn, pnpm)λ₯Ό μ¬μ©νμ¬ κ°μ₯ λΉ λ₯Έ μ€μΉ μλλ₯Ό μ 곡νλ κ΄λ¦¬μλ₯Ό νμΈνμμμ€. ν¨μ¨μ μΈ λμ€ν¬ κ³΅κ° νμ©μ μν΄ pnpmμ κ³ λ €νμμμ€.
- μ’ μμ± νΈλ¦¬: ν° μ’ μμ± νΈλ¦¬λ μ€μΉ μλλ₯Ό λ¦μΆ μ μμ΅λλ€. μ’ μμ±μ μ κΈ°μ μΌλ‘ κ°μ¬νκ³ μ¬μ©νμ§ μλ μ’ μμ±μ μ κ±°ν©λλ€. μ¬μ©νμ§ μλ κ°μ Έμ€κΈ°λ₯Ό μλ³νκ³ μ κ±°νλ λꡬλ₯Ό μ¬μ©νλ κ²μ΄ μ’μ΅λλ€.
- μΊμ±: λ€μ΄λ‘λν ν¨ν€μ§λ₯Ό λ‘컬μ μΊμνλλ‘ ν¨ν€μ§ κ΄λ¦¬μλ₯Ό ꡬμ±ν©λλ€.
- λ€νΈμν¬ μλ: λΉ λ₯΄κ³ μμ μ μΈ μΈν°λ· μ°κ²°μ΄ νμμ μ λλ€. νμν κ²½μ° κ°λ° νμ μμΉμ λ κ°κΉμ΄ ν¨ν€μ§ λ μ§μ€νΈλ¦¬ λ―Έλ¬λ₯Ό μ¬μ©νλ κ²μ΄ μ’μ΅λλ€.
3. μ½λ νΈμ§κΈ° μ±λ₯
λλ¦° μ½λ νΈμ§κΈ°λ κ°λ°μ μμ°μ±μ μ¬κ°ν μν₯μ λ―ΈμΉ μ μμ΅λλ€. νκ°ν μμλ λ€μκ³Ό κ°μ΅λλ€.
- νμ₯ νλ‘κ·Έλ¨: μ€μΉλ νμ₯ νλ‘κ·Έλ¨μ μν₯μ νκ°ν©λλ€. μλΉν 리μμ€λ₯Ό μλΉνλ νμ₯ νλ‘κ·Έλ¨μ λΉνμ±ννκ±°λ μ κ±°ν©λλ€.
- νμΌ ν¬κΈ°: λ§€μ° ν° νμΌμ νΈμ§κΈ° μ±λ₯μ μ νμν¬ μ μμ΅λλ€. 볡μ‘ν κ΅¬μ± μμλ₯Ό λ μκ³ κ΄λ¦¬νκΈ° μ¬μ΄ νμΌλ‘ 리ν©ν°λ§ν©λλ€.
- νΈμ§κΈ° ꡬμ±: μλλ₯Ό μν΄ νΈμ§κΈ° μ€μ (μ: ꡬ문 κ°μ‘° νμ, μλ μμ±)μ μ΅μ νν©λλ€.
- νλμ¨μ΄ κ°μ: νΈμ§κΈ° λ΄μμ νλμ¨μ΄ κ°μμ΄ νμ±νλμ΄ μλμ§ νμΈν©λλ€.
4. ν μ€ν λ° λλ²κΉ
λλ¦° ν μ€νΈ λ° λλ²κΉ νλ‘μΈμ€λ κ°λ°μλ₯Ό μ’μ μν¬ μ μμ΅λλ€. λΆμ:
- ν μ€νΈ μ€ν μκ°: λλ¦¬κ² μ€νλλ ν μ€νΈλ₯Ό μλ³ν©λλ€. μ€μ λ° ν΄μ μμ μ€μ΄κ³ ν μ€νΈλ₯Ό λ³λ ¬λ‘ μ€ννμ¬ ν μ€νΈλ₯Ό μ΅μ νν©λλ€.
- λλ²κΉ μκ°: λλ²κΉ λꡬλ₯Ό ν¨κ³Όμ μΌλ‘ μ¬μ©νλ λ°©λ²μ λ°°μλλ€. μ½λλ₯Ό νλ‘νμΌλ§νμ¬ λ³λͺ© νμμ μλ³ν©λλ€. μ€λ¨μ μ μ μ€νκ² μ¬μ©νκ³ μ격 λλ²κΉ μ κ³ λ €ν©λλ€.
- ν μ€νΈ 컀λ²λ¦¬μ§: ν¬κ΄μ μ΄λ©΄μλ ν¨μ¨μ μΈ ν μ€νΈ 컀λ²λ¦¬μ§λ₯Ό λͺ©νλ‘ ν©λλ€. μ€λ³΅ ν μ€νΈλ₯Ό νΌν©λλ€.
5. CI/CD νμ΄νλΌμΈ
μλͺ» ꡬμ±λ CI/CD νμ΄νλΌμΈμ λ°°ν¬ λ° νΌλλ°±μ μ§μ°μν¬ μ μμ΅λλ€. λ€μμ μ§μ€νμμμ€.
- νμ΄νλΌμΈ μλ: CI/CD κ΅¬μ± λ΄μμ λΉλ λ¨κ³, μΊμ± λ° λ³λ ¬νλ₯Ό μ΅μ νν©λλ€.
- μλν: λΉλ, ν μ€νΈ λ° λ°°ν¬ νλ‘μΈμ€λ₯Ό μ΅λν μλνν©λλ€.
- νκ²½ μΌκ΄μ±: κ°λ°, μ€ν μ΄μ§ λ° νλ‘λμ νκ²½ κ°μ μΌκ΄μ±μ 보μ₯ν©λλ€. 컨ν μ΄λν(μ: Docker)λ₯Ό μ¬μ©νμ¬ μ΄λ₯Ό λ¬μ±ν©λλ€.
μ±λ₯μ μ ν©ν λꡬ μ ν
μ±λ₯μ΄ λ°μ΄λ λꡬ 체μΈμ μν΄μλ μ μ ν λꡬλ₯Ό μ ννλ κ²μ΄ μ€μν©λλ€. λͺ κ°μ§ μ£Όμ μ ν μ¬νμ λν κ°μ΄λλ λ€μκ³Ό κ°μ΅λλ€.
1. λΉλ λꡬ
λͺ κ°μ§ μ΅μ μ΄ μμΌλ©° κ°κ° κ°μ μ΄ μμ΅λλ€.
- Webpack: κ΅¬μ± κ°λ₯μ±μ΄ λκ³ κ΄λ²μν νλ¬κ·ΈμΈμ μ§μν©λλ€. 볡μ‘ν νλ‘μ νΈμ μ ν©νμ§λ§ νμ΅ κ³‘μ μ΄ κ°νλ₯΄κ³ μ΅μ μ μ±λ₯μ μν΄ μλΉν ꡬμ±μ΄ νμν μ μμ΅λλ€. `webpack-bundle-analyzer`μ κ°μ λꡬλ₯Ό μ¬μ©νμ¬ λ²λ€ ν¬κΈ°λ₯Ό μ΄ν΄νλ κ²μ΄ μ’μ΅λλ€.
- Parcel: μ λ‘ κ΅¬μ±, λΉ λ₯Έ λΉλ μκ°. Webpackλ³΄λ€ μ€μ νκΈ° μ½κ³ μκ·λͺ¨μμ μ€κ° κ·λͺ¨ νλ‘μ νΈμ μ ν©ν©λλ€. λ§€μ° λ³΅μ‘ν μꡬ μ¬νμλ μ μ°μ±μ΄ λ¨μ΄μ§ μ μμ΅λλ€.
- Rollup: λΌμ΄λΈλ¬λ¦¬ λ° μ ν리μΌμ΄μ , νΉν νΈλ¦¬ μμ΄νΉμ μ΄μ μ μ»μ μ μλ μ ν리μΌμ΄μ μ λ§λλ λ° μ€μ μ λ‘λλ€. μ’ μ’ Webpackλ³΄λ€ μμ λ²λ€μ μμ±ν©λλ€.
- esbuild: Goλ‘ μμ±λμ΄ λΉλ μκ°μ΄ λ§€μ° λΉ λ¦ λλ€. λκ·λͺ¨ νλ‘μ νΈμ μ ν©νμ§λ§ Webpackμ λΉν΄ νλ¬κ·ΈμΈ μ§μμ΄ μ νμ μ λλ€. λΉ λ₯΄κ² μΈκΈ°λ₯Ό μ»κ³ μμ΅λλ€.
κΆμ₯ μ¬ν: νλ‘μ νΈμ κ°μ₯ μ ν©ν λΉλ λꡬλ₯Ό μ°ΎκΈ° μν΄ λ€μν λΉλ λꡬλ₯Ό μ¬μ©ν΄ 보μμμ€. νλ‘μ νΈμ 볡μ‘μ±, ν μ λ¬Έμ± λ° μ±λ₯ μꡬ μ¬νμ κ³ λ €νμμμ€.
2. ν¨ν€μ§ κ΄λ¦¬μ
- npm: Node.jsμ κΈ°λ³Έ ν¨ν€μ§ κ΄λ¦¬μμ λλ€. ν° μνκ³μ΄μ§λ§ 볡μ‘ν μ’ μμ± νΈλ¦¬μλ λ릴 μ μμ΅λλ€.
- yarn: npmμ μ±λ₯μ ν₯μμν€κ³ λ λ§μ κΈ°λ₯μ μ 곡ν©λλ€.
- pnpm: μ½ν μΈ μ£Όμ μ§μ μ΄ κ°λ₯ν μ€ν 리μ§μ μ’ μμ±μ μ μ₯νμ¬ λμ€ν¬ κ³΅κ° μ¬μ©λμ ν¬κ² μ€μ΄κ³ μ€μΉ μλλ₯Ό ν₯μμν΅λλ€. ν¨μ¨μ±μ μν΄ μ κ·Ή κΆμ₯λ©λλ€.
κΆμ₯ μ¬ν: pnpmμ μ±λ₯ λ° λμ€ν¬ κ³΅κ° ν¨μ¨μ±μ μν΄ μ’ μ’ μ΅μμ μ νμ λλ€. pnpmμ΄ κΈ°μ‘΄ μνκ³ λ΄μμ ν΅ν© λ¬Έμ λ₯Ό μΌμΌν€λ κ²½μ° yarnμ νκ°νμμμ€.
3. μ½λ νΈμ§κΈ°
μ½λ νΈμ§κΈ° μ νμ μ’ μ’ κ°μΈμ μΈ μ νΈλμ λ¬Έμ μ΄μ§λ§ μ±λ₯μ΄ ν΅μ¬ μμμ¬μΌ ν©λλ€. μΈκΈ° μλ μ΅μ μ λ€μκ³Ό κ°μ΅λλ€.
- Visual Studio Code(VS Code): λ리 μ¬μ©λκ³ νμ₯μ±μ΄ λ°μ΄λλ©° νλΆν νμ₯ νλ‘κ·Έλ¨ μνκ³λ₯Ό κ°μ§κ³ μμ΅λλ€.
- Sublime Text: λΉ λ₯΄κ³ κ°λ²Όμ°λ©° μ¬μ©μ μ μκ° κ°λ₯ν©λλ€.
- WebStorm: JetBrainsμ κ°λ ₯ν IDEλ‘ μΉ κ°λ°μ μν΄ νΉλ³ν μ€κ³λμμ΅λλ€. κ³ κΈ κΈ°λ₯κ³Ό λ°μ΄λ μ½λ μμ±μ μ 곡ν©λλ€.
κΆμ₯ μ¬ν: μ±λ₯ νΉμ±μ΄ μ’κ³ νμν κΈ°λ₯μ΄ μλ νΈμ§κΈ°λ₯Ό μ ννμμμ€. μ νμ κ΄κ³μμ΄ μ±λ₯μ μν΄ νΈμ§κΈ° ꡬμ±μ μ΅μ ννμμμ€.
4. ν μ€ν νλ μμν¬
ν μ€ν νλ μμν¬λ μμ μ μ΄κ³ λΉ λ₯Έ ν μ€νΈ μ€νμ μ 곡ν΄μΌ ν©λλ€. μΌλ°μ μΈ μ ν μ¬νμ λ€μκ³Ό κ°μ΅λλ€.
- Jest: μ¬μ©μ μΉνμ μ΄κ³ λΉ λ₯΄λ©° μ’μ λͺ¨μ κΈ°λ₯μ κ°μ§κ³ μμ΅λλ€. μ’ μ’ React νλ‘μ νΈμ μ’μ μ νμ λλ€.
- Mocha: μ μ°ν νλ μμν¬, λ리 μ¬μ©λ©λλ€. Jestλ³΄λ€ λ λ§μ ꡬμ±μ΄ νμν©λλ€.
- Jasmine: λμ μ£Όλ κ°λ°(BDD) νλ μμν¬.
κΆμ₯ μ¬ν: λ€μν νλ μμν¬λ₯Ό νκ°νμ¬ νλ‘μ νΈμ μꡬ μ¬νμ κ°μ₯ μ ν©ν νλ μμν¬λ₯Ό κ²°μ νμμμ€. Jestμ μ¬μ© νΈμμ±κ³Ό μλλ₯Ό κ³ λ €νμμμ€.
5. λλ²κΉ λꡬ
ν¨κ³Όμ μΈ λλ²κΉ μ μνν κ°λ° μν¬νλ‘μ°μ νμμ μ λλ€. λ€μ λꡬλ₯Ό νμ©νμμμ€.
- λΈλΌμ°μ κ°λ°μ λꡬ: μ±λ₯ λΆμμ ν¬ν¨ν νλ°νΈ μλ λλ²κΉ μ μ ν©ν©λλ€.
- Node.js λλ²κ±°: λ°±μλ λλ²κΉ μ©.
- μ½λ νΈμ§κΈ°μ λλ²κ±°: VS Code, WebStorm λ° κΈ°ν IDEλ ν΅ν© λλ²κ±°λ₯Ό μ 곡ν©λλ€.
κΆμ₯ μ¬ν: μ νν λλ²κ±°λ₯Ό λ₯μνκ² μ¬μ©νμμμ€. μ€λ¨μ μ ν¨κ³Όμ μΌλ‘ μ¬μ©νκ³ μ½λλ₯Ό νλ‘νμΌλ§νμ¬ λ³λͺ© νμμ μλ³νλ λ°©λ²μ λ°°μλλ€.
μ΅μ νλ₯Ό μν μ€ν κ°λ₯ν μ λ΅
μ΄λ¬ν μ λ΅μ ꡬννλ©΄ JavaScript λꡬ 체μΈμ μ±λ₯μ΄ ν₯μλ©λλ€.
1. μ½λ λΆν λ° μ§μ° λ‘λ©
μ΄κΈ° λ‘λ μκ°μ μ€μ΄κΈ° μν΄ μ½λλ₯Ό λ μμ μ²ν¬λ‘ λλλλ€. μ ν리μΌμ΄μ μ μ€μνμ§ μμ λΆλΆμ λν΄ μ§μ° λ‘λ©μ ꡬνν©λλ€. μ΄λ ν¬κ³ 볡μ‘ν μ ν리μΌμ΄μ μ νΉν μ€μν©λλ€.
μ: λκ·λͺ¨ μ μ μκ±°λ μ¬μ΄νΈμ κ²½μ° μ¬μ©μκ° ν΄λΉ νμ΄μ§λ‘ μ΄λν λλ§ μ ν μΈλΆ μ 보 νμ΄μ§λ₯Ό λ‘λν©λλ€. μ΄λ κ² νλ©΄ ννμ΄μ§μ μ΄κΈ° λ‘λ© μκ°μ ν¬κ² μ€μΌ μ μμ΅λλ€.
2. νΈλ¦¬ μμ΄νΉ
νλ‘λμ λ²λ€μμ μ¬μ©νμ§ μλ μ½λλ₯Ό μ κ±°ν©λλ€. Webpack λ° Rollupκ³Ό κ°μ λΉλ λꡬλ νΈλ¦¬ μμ΄νΉμ μννμ¬ λ°λ μ½λλ₯Ό μ κ±°ν μ μμ΅λλ€.
3. μΆμ λ° μμΆ
νμΌ ν¬κΈ°λ₯Ό μ€μ΄κΈ° μν΄ JavaScript λ° CSS νμΌμ μ΅μνν©λλ€. λ€μ΄λ‘λ ν¬κΈ°λ₯Ό λμ± μ€μ΄κΈ° μν΄ νμΌ(μ: Gzip λλ Brotli μ¬μ©)μ μμΆν©λλ€.
4. μ΄λ―Έμ§ μ΅μ ν
μΉ μ¬μ©μ μν΄ μ΄λ―Έμ§λ₯Ό μ΅μ νν©λλ€. μ μ ν μ΄λ―Έμ§ νμ(μ: WebP)μ μ¬μ©νκ³ , νμ§ μμ€ μμ΄ μ΄λ―Έμ§λ₯Ό μμΆνκ³ , λ°μν μ΄λ―Έμ§λ₯Ό μ¬μ©ν©λλ€.
5. μΊμ± μ λ΅
μμ² μλ₯Ό μ€μ΄κ³ λ‘λ μκ°μ κ°μ νκΈ° μν΄ κ°λ ₯ν μΊμ± μ λ΅μ ꡬνν©λλ€. λΈλΌμ°μ μΊμ±, μλΉμ€ μ컀 λ° μ½ν μΈ μ μ‘ λ€νΈμν¬(CDN)λ₯Ό μ¬μ©ν©λλ€.
μ: μ μ μμ°μ λν΄ μ μ ν μΊμ ν€λ(`Cache-Control`)λ₯Ό μ€μ νλλ‘ μΉ μλ²λ₯Ό ꡬμ±νμ¬ λΈλΌμ°μ κ° λ μ€λ«λμ μΊμν μ μλλ‘ ν©λλ€. CDNμ μ¬μ©νμ¬ μ¬λ¬ μ§λ¦¬μ μμΉμ μμ°μ λ°°ν¬νμ¬ μ μΈκ³ μ¬μ©μμ λ‘λ© μκ°μ κ°μ ν©λλ€.
6. μ’ μμ± κ΄λ¦¬
μ’ μμ±μ μ κΈ°μ μΌλ‘ κ°μ¬νκ³ μ¬μ©νμ§ μλ ν¨ν€μ§λ₯Ό μ κ±°ν©λλ€. μ±λ₯ ν₯μ λ° λ³΄μ ν¨μΉμ μ΄μ μ μ»μΌλ €λ©΄ μ’ μμ±μ μ΅μ μνλ‘ μ μ§νμμμ€.
μ: `npm-check` λλ `npm-check-updates`μ κ°μ λꡬλ₯Ό μ¬μ©νμ¬ μ€λλκ³ μ¬μ©νμ§ μλ μ’ μμ±μ μλ³ν©λλ€. νΈνμ± λ° λ³΄μμ 보μ₯νκΈ° μν΄ μ’ μμ±μ μ κΈ°μ μΌλ‘ μ λ°μ΄νΈν©λλ€.
7. λΉλ λꡬ ꡬμ±
λΉλ λꡬ ꡬμ±μ μ΅μ νν©λλ€. λ²λ€ ν¬κΈ°λ₯Ό μ΅μννκ³ , μΊμ±μ νμ±ννκ³ , μ±λ₯ ν₯μ νλ¬κ·ΈμΈμ μ¬μ©νλλ‘ λΉλ λꡬλ₯Ό ꡬμ±ν©λλ€.
μ: λμ `import()` λ¬Έκ³Ό μΆμλ₯Ό μν `terser-webpack-plugin`κ³Ό κ°μ νλ¬κ·ΈμΈμ μ¬μ©νμ¬ μ½λ λΆν μ μ¬μ©νλλ‘ Webpackμ ꡬμ±ν©λλ€. `webpack-bundle-analyzer`λ₯Ό νμ©νμ¬ λ²λ€ ν¬κΈ°λ₯Ό μκ°μ μΌλ‘ μλ³νκ³ λΆμν©λλ€.
8. CI/CD νμ΄νλΌμΈ μ΅μ ν
λΉλ, ν μ€νΈ λ° λ°°ν¬ μκ°μ μ€μ΄κΈ° μν΄ CI/CD νμ΄νλΌμΈμ μ΅μ νν©λλ€. μμ μ λ³λ ¬ννκ³ , μΊμ± λ©μ»€λμ¦μ μ¬μ©νκ³ , λ°°ν¬λ₯Ό μλνν©λλ€.
μ: CI/CD μμ€ν λ΄μμ λ³λ ¬ ν μ€νΈ μ€νμ νμ©ν©λλ€. μ’ μμ± λ° λΉλ μν°ν©νΈλ₯Ό μΊμνμ¬ νμ λΉλ μλλ₯Ό λμ λλ€. λ λΉ λ₯Έ νΌλλ°± μ£ΌκΈ°λ₯Ό μν΄ "λ°°ν¬ λ―Έλ¦¬λ³΄κΈ°"μ κ°μ μ λ΅μ κ³ λ €νμμμ€.
9. λͺ¨λν°λ§ λ° νλ‘νμΌλ§
μ ν리μΌμ΄μ μ μ±λ₯μ μ κΈ°μ μΌλ‘ λͺ¨λν°λ§νκ³ νλ‘νμΌλ§νμ¬ λ³λͺ© νμμ μλ³νκ³ ν΄κ²°ν©λλ€. λΈλΌμ°μ κ°λ°μ λꡬ, νλ‘νμΌλ§ λꡬ λ° μ±λ₯ λͺ¨λν°λ§ μλΉμ€λ₯Ό μ¬μ©ν©λλ€.
μ: Chrome DevTools μ±λ₯ νμ μ¬μ©νμ¬ μ ν리μΌμ΄μ μ νλ‘νμΌλ§νκ³ λλ¦¬κ² μ€νλλ ν¨μμ μ΅μ νν΄μΌ νλ μ½λ μμμ μλ³ν©λλ€. Lighthouseμ κ°μ λꡬλ₯Ό νμ©νμ¬ μ λ°μ μΈ μ±λ₯μ νκ°νκ³ κ°μ ν μμμ μλ³ν©λλ€. μ μ¬μ μΈ λ¬Έμ λ₯Ό μ¬μ μ ν΄κ²°νκΈ° μν΄ μ±λ₯ μ§νλ₯Ό μ κΈ°μ μΌλ‘ κ²ν ν©λλ€.
10. ν νμ λ° λͺ¨λ² μ¬λ‘
ν λ΄μμ λͺ νν μ½λ© νμ€κ³Ό λͺ¨λ² μ¬λ‘λ₯Ό μ€μ ν©λλ€. κ°λ°μκ° μ±λ₯ κ³ λ € μ¬νμ μκ³ κ°λ° μν¬νλ‘μ°λ₯Ό μ΅μ ννλ λ° μ¬μ©λλ λꡬμ κΈ°μ μ λν κ΅μ‘μ λ°λλ‘ ν©λλ€.
μ: κ°λ°μκ° μ μ¬μ μΈ μ±λ₯ λ¬Έμ λ₯Ό μλ³νκΈ° μν΄ μλ‘μ μ½λλ₯Ό κ²ν νλ μ½λ κ²ν λ₯Ό ꡬνν©λλ€. μ½λ μΌκ΄μ±κ³Ό λͺ¨λ² μ¬λ‘ μ€μλ₯Ό 보μ₯νκΈ° μν΄ κ³΅μ μ€νμΌ κ°μ΄λλ₯Ό λ§λλλ€. νμ μν μ±λ₯ μ΅μ ν κΈ°μ μ λν κ΅μ‘ μΈμ μ μ 곡ν©λλ€.
κ΅μ μ κ³ λ € μ¬ν λ° λͺ¨λ² μ¬λ‘
κ΅μ νκ³Ό ν¨κ» μμ ν λλ λ€μ μμλ₯Ό κ³ λ €νμμμ€.
- μκ°λ: λ€λ₯Έ μκ°λμ μν₯μ μ΅μννκΈ° μν΄ λΉλκΈ° ν΅μ μ ꡬνν©λλ€. Slack, Microsoft Teams λλ νλ‘μ νΈ κ΄λ¦¬ μννΈμ¨μ΄μ κ°μ λꡬλ₯Ό μ¬μ©νμ¬ ν΅μ μ μ©μ΄νκ² ν©λλ€.
- μΈμ΄ λ° λ¬Ένμ μ°¨μ΄: λ¬Έμ λ° ν΅μ μμ λͺ ννκ³ κ°κ²°ν μΈμ΄λ₯Ό μ¬μ©ν©λλ€. νμμ λ¬Ένμ λμμ€λ₯Ό κ³ λ €νμμμ€. κ°λ₯ν κ²½μ° λ€κ΅μ΄ μ§μμ μ 곡ν©λλ€.
- μΈν°λ· μ‘μΈμ€ λ° μλ: μ§μμ λ°λΌ λ€λ₯Έ μΈν°λ· μλλ₯Ό μΌλμ λμμμ€. μΈν°λ· μ°κ²° μλκ° λλ¦° μ¬μ©μλ₯Ό μν΄ μ ν리μΌμ΄μ μ μ΅μ νν©λλ€. CDNμ μ¬μ©νμ¬ λμ κ³ κ°μκ² λ κ°κΉμ΄ μμ°μ νΈμ€ν νλ κ²μ΄ μ’μ΅λλ€.
- λ°μ΄ν° κ°μΈ μ 보 λ³΄νΈ λ° κ·μ μ€μ: μ¬μ©μ λ°μ΄ν°λ₯Ό μ²λ¦¬ν λ λ°μ΄ν° κ°μΈ μ 보 λ³΄νΈ κ·μ (μ: GDPR, CCPA)μ μ€μν©λλ€. κ΄λ ¨ κ·μ μ μ€μνλ νΈμ€ν μ 곡μ 체 λ° λ°μ΄ν° μ μ₯ μμΉλ₯Ό μ ννμμμ€.
μ§μμ μΈ κ°μ
μ±λ₯ μ΅μ νλ μ§μμ μΈ νλ‘μΈμ€μ λλ€. λꡬ 체μΈμ μ κΈ°μ μΌλ‘ κ²ν νκ³ , μ±λ₯ μ§νλ₯Ό λΆμνκ³ , νμμ λ°λΌ μ λ΅μ μ‘°μ ν©λλ€. JavaScript κ°λ°μ μ΅μ λ°μ μ λν μ΅μ μ 보λ₯Ό μ μ§νκ³ μλ‘μ΄ λꡬμ κΈ°μ μ΄ λ±μ₯ν¨μ λ°λΌ μ±νν©λλ€.
κ²°λ‘
JavaScript κ°λ° μν¬νλ‘μ°λ₯Ό μ΅μ ννλ κ²μ κ³ μ±λ₯ μΉ μ ν리μΌμ΄μ μ ꡬμΆνκ³ μμ°μ μΈ κ΅μ νλ ₯μ μ΄μ§νλ λ° μ€μν©λλ€. λꡬ 체μΈμ μ΄ν΄νκ³ , λ³λͺ© νμμ μλ³νκ³ , μ μ ν λꡬλ₯Ό μ ννκ³ , ν¨κ³Όμ μΈ μ΅μ ν μ λ΅μ ꡬνν¨μΌλ‘μ¨ κ°λ° νμ μμ°μ±μ ν¬κ² ν₯μμν€κ³ , λΉμ©μ μ κ°νκ³ , λ°μ΄λ μ¬μ©μ κ²½νμ μ 곡ν μ μμ΅λλ€. μ§μμ μΈ κ°μ μ μμ©νκ³ λμμμ΄ μ§ννλ JavaScript κ°λ° νκ²½μ μ μνμ¬ κΈλ‘λ² μμ₯μμ κ²½μ μ°μλ₯Ό μ μ§νμμμ€.